home *** CD-ROM | disk | FTP | other *** search
/ ASME's Mechanical Engine…ing Toolkit 1997 December / ASME's Mechanical Engineering Toolkit 1997 December.iso / fortran / 1hetst.for < prev    next >
Text File  |  1984-01-28  |  4KB  |  183 lines

  1. C WHETSTONE BENCHMARK PROGRAM
  2. C
  3. C THIS PROGRAM USES A CAREFULLY CHOSEN MIX OF INSTRUCTIONS TYPICAL OF
  4. C SCIENTIFIC (FLOATING POINT) CALCULATIONS
  5. C
  6. C SEE H.J. CURNOW AND B.A. WICHMANN,
  7. C "A SYNTHETIC BENCHMARK", COMPUTER J., V19 #1, FEB. 1976, PP. 43-49.
  8. C
  9. C TABLE OF TIMES FOR VARIOUS COMPUTERS IN <INFO-IBMPC>WHETST.ANSWERS
  10. C COMPILED BY RICHARD GILLMANN (GILLMANN@ISIB)
  11. C
  12.       REAL X1,X2,X3,X4,X,Y,Z,T,T1,T2,E1
  13.       COMMON T,T1,T2,E1(4),J,K,L
  14. C I=10 CORRESPONDS TO ONE MILLION WHETSTONE INSTRUCTIONS
  15.       I=10
  16.       T1=050025000
  17.       T=0.499975000
  18.       T2=2.0000
  19.       ISAVE=I
  20.       N1=0
  21.       N2=12*I
  22.       N3=14*I
  23.       N4=348*I
  24.       N5=0
  25.       N6=210*I
  26.       N7=32*I
  27.       N8=899*I
  28.       N9=516*I
  29.       N10=0
  30.       N11=93*I
  31.       N12=0
  32.       X1=1.0
  33.       X2=-1.0
  34.       X3=-1.0
  35.       X4=-1.
  36.       IF(N1)19,19,11
  37.    11 DO 18 I=1,N1,1
  38.       X1=(X1+X2+X3-X4)*T
  39.       X2=(X1+X2-X3+X4)*T
  40.       X4=(-X1+X2+X3+X4)*T
  41.       X3=(X1-X2+X3+X4)*T
  42.    18 CONTINUE
  43.    19 CONTINUE
  44.       CALL POUT(N1,N1,N1,X1,X2,X3,X4)
  45.       E1(1)=1.0
  46.       E1(2)=-1.0
  47.       E1(3)=-1.0
  48.       E1(4)=-1.0
  49.       IF(N2)29,29,21
  50.    21 DO 28 I=1,N2,1
  51.       E1(1)=(E1(1)+E1(2)+E1(3)-E1(4))*T
  52.       E1(2)=(E1(1)+E1(2)-E1(3)+E1(4))*T
  53.       E1(3)=(E1(1)-E1(2)+E1(3)+E1(4))*T
  54.       E1(4)=(-E1(1)+E1(2)+E1(3)+E1(4))*T
  55.    28 CONTINUE
  56.    29 CONTINUE
  57.       CALL POUT(N2,N3,N2,E1(1),E1(2),E1(3),E1(4))
  58.       IF(N3)39,39,31
  59.    31 DO 38 I=1,N3,1
  60.    38 CALL PA(E1)
  61.   39  CONTINUE
  62.       CALL POUT(N3,N2,N2,E1(1),E1(2),E1(3),E1(4))
  63.       J=1
  64.       IF(N4)49,49,41
  65.    41 DO 48 I=1,N4,1
  66.       IF(J-1)43,42,43
  67.    42 J=2
  68.       GOTO 44
  69.    43 J=3
  70.    44 IF(J-2)45,46,46
  71.    45 J=0
  72.       GOTO 47
  73.    46 J=1
  74.    47 IF(J-1)411,412,412
  75.   411 J=1
  76.       GOTO 48
  77.   412 J=0
  78.    48 CONTINUE
  79.    49 CONTINUE
  80.       CALL POUT(N4,J,J,X1,X2,X3,X4)
  81.       J=1
  82.       K=2
  83.       L=3
  84.       IF(N6)69,69,61
  85.    61 DO 68 I=1,N6,1
  86.       J=J*(K-J)*(L-K)
  87.       K=L*K-(L-J)*K
  88.       L=(L-K)*(K+J)
  89.       E1(L-1)=J+K+L
  90.       E1(K-1)=J*K*L
  91.    68 CONTINUE
  92.    69 CONTINUE
  93.       CALL POUT(N6,J,K,E1(1),E1(2),E1(3),E1(4))
  94.       X=0.5
  95.       Y=0.5
  96.       IF(N7)79,79,71
  97.    71 DO 78 I=1,N7,1
  98.       X=T* ATAN(T2* SIN(X)* COS(X)/( COS(X+Y)+ COS(X-Y)-1.0  ))
  99.       Y=T* ATAN(T2* SIN(Y)* COS(Y)/( COS(X+Y)+ COS(X-Y)-1.0  ))
  100.    78 CONTINUE
  101.    79 CONTINUE
  102.       CALL POUT(N7,J,K,X,X,Y,Y)
  103.       X=1.0
  104.       Y=1.0
  105.       Z=1.0
  106.       IF(N8)89,89,81
  107.    81 DO 88 I=1,N8,1
  108.    88 CALL P3(X,Y,Z)
  109.    89 CONTINUE
  110.       CALL POUT(N8,J,K,X,Y,Z,Z)
  111.       J=1
  112.       K=2
  113.       L=3
  114.       E1(1)=1.0
  115.       E1(2)=2.0
  116.       E1(3)=3.0
  117.       IF(N9)99,99,91
  118.    91 DO 98 I=1,N9,1
  119.    98 CALL P0
  120.    99 CONTINUE
  121.       CALL POUT(N9,J,K,E1(1),E1(2),E1(3),E1(4))
  122.       J=2
  123.       K=3
  124.       IF(N10)109,109,101
  125.   101 DO 108 I=1,N10,1
  126.       J=J+K
  127.       K=J+K
  128.       J=J-K
  129.       K=K-J-J
  130.   108 CONTINUE
  131.   109 CONTINUE
  132.       CALL POUT(N10,J,K,X1,X2,X3,X4)
  133.       X=0.75
  134.       IF(N11)119,119,111
  135.   111 DO 118 I=1,N11,1
  136.   118 X= SQRT( EXP(ALOG(X)/T1))
  137. 119   CONTINUE
  138.       CALL POUT(N11,J,K,X,X,X,X)
  139.       STOP
  140.       END
  141. C SUBROUTINE PA
  142.       SUBROUTINE PA(E)
  143.       REAL T,T1,T2,E
  144.       COMMON T,T1,T2
  145.       DIMENSION E(4)
  146.       J=0
  147. 1     E(1)=(E(1)+E(2)+E(3)-E(4))*T
  148.       E(2)=(E(1)+E(2)-E(3)+E(4))*T
  149.       E(3)=(E(1)-E(2)+E(3)+E(4))*T
  150.       E(4)=(-E(1)+E(2)+E(3)+E(4))/T2
  151.       J=J+1
  152.       IF(J-6)1,2,2
  153. 2     CONTINUE
  154.       RETURN
  155.       END
  156. C SUBROUTINE P0
  157.       SUBROUTINE P0
  158.       REAL T,T1,T2,E1
  159.       COMMON T,T1,T2,E1(4),J,K,L
  160.       E1(J)=E1(K)
  161.       E1(K)=E1(L)
  162.       E1(L)=E1(J)
  163.       RETURN
  164.       END
  165. C SUBROUTINE P3
  166.       SUBROUTINE P3(X,Y,Z)
  167.       REAL T,T1,T2,X1,Y1,X,Y,Z
  168.       COMMON T,T1,T2
  169.       X1=X
  170.       Y1=Y
  171.       X1=T*(X1+Y1)
  172.       Y1=T*(X1+Y1)
  173.       Z=(X1+Y1)/T2
  174.       RETURN
  175.       END
  176. C SUBROUTINE POUT
  177.       SUBROUTINE POUT(N,J,K,X1,X2,X3,X4)
  178.       REAL X1,X2,X3,X4
  179.       WRITE(5,1)N,J,K,X1,X2,X3,X4
  180. 1     FORMAT(1H ,3I7,4E12.4)
  181.       RETURN
  182.       END
  183.